﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenu>
#include <QStandardItemModel>
#include <sql/csqlmanager.h>
#include "sharedDefine.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    static MainWindow* sp_mainWindows;
private:
    Ui::MainWindow *ui;

    // 右键时，在表格的哪一行
    static QModelIndex s_qModelIndex;

    QStandardItemModel* p_questionsTable = nullptr;

    // 窗口运行时初始化的工作
    // 1. 题目信息表
    // 2. 右键
    void init();
    //从数据库中读取数据填充到界面上
    void initQuestionTableFromDB();

    // 右键菜单
    QMenu _menu_rightClick;
    // 右键[导出该题目]
    QAction* pAct_exportQuestion;
    // 右键[刷新题库]
    QAction* pAct_reflushQuesLib;

private slots:
    // 右键槽函数
    void onCustomContextMenuRequested(const QPoint& point);
    void onExportQuestion();
    // 右键刷新题目库表
    void onReflushQuesLib();

    // 菜单栏
    // [设置 > 选项]
    void on_action_option_triggered();
    // [题库 > 导入新题]
    void on_actionnew_ques_triggered();
    // 从xml文件导入数据库
    void on_action_importSqliteFromXML_triggered();

    void on_action_exportSqlite2XML_triggered();
    void on_tab_questions_clicked(const QModelIndex &index);

    // 打印运行日志
    void on_printRunningLog(QString log);
signals:
    //其他类可以通过 emit(MainWindow::sp_mainWindows->printRunningLog("log"));来使用
    void printRunningLog(QString log);
};
#endif // MAINWINDOW_H
